import cloudRequest, { cacheManager } from '@/utils/request.js'

// 默认缓存配置 - 查询类接口
const defaultCacheConfig = {
  useCache: true,
  cacheExpire: 3600, // 1小时
  showLoading: true,
  showError: true
}

// 默认配置 - 变更类接口
const defaultMutationConfig = {
  useCache: false,
  showLoading: true,
  showError: true
}

// ==================== 壁纸分类相关 ====================
/**
 * 获取壁纸分类列表
 * @param {Object} params 查询参数
 * @param {Object} config 请求配置
 */
export function apiGetClassifyList(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-classify', 'getClassifyList', params, {
    ...defaultCacheConfig,
    ...config
  })
}

// ==================== 轮播图相关 ====================
/**
 * 获取轮播图列表
 * @param {Object} params 查询参数
 * @param {Object} config 请求配置
 */
export function apiGetSwiperList(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-swiper', 'getSwiperList', params, {
    ...defaultCacheConfig,
    ...config
  })
}

// ==================== 公告相关 ====================
/**
 * 获取公告列表
 * @param {Object} params 查询参数
 * @param {Object} config 请求配置
 */
export function apiGetNoticeList(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-notice', 'getNoticeList', params, {
    ...defaultCacheConfig,
    ...config
  })
}

/**
 * 根据ID获取公告详情
 * @param {Object} params 查询参数 {id}
 * @param {Object} config 请求配置
 */
export function apiGetNoticeById(params, config = {}) {
  return cloudRequest('client-wallpaper-notice', 'getNoticeById', params, {
    ...defaultCacheConfig,
    cacheKey: `notice_detail_${params.id}`, // 特定key便于管理
    ...config
  })
}

// ==================== 壁纸相关 ====================
/**
 * 获取壁纸列表
 * @param {Object} params 查询参数 
 * @param {boolean} params.random 是否随机获取
 * @param {number} params.pageSize 每页数量
 * @param {Object} config 请求配置
 */
export function apiGetImageList(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-image', 'getImageList', params, {
    ...defaultCacheConfig,
    ...config
  })
}

/**
 * 根据ID获取壁纸基本信息
 * @param {Object} params 查询参数 {id}
 * @param {Object} config 请求配置
 */
export function apiGetImageById(params, config = {}) {
  return cloudRequest('client-wallpaper-image', 'getImageById', params, {
    ...defaultCacheConfig,
    cacheKey: `image_base_${params.id}`,
    ...config
  })
}

/**
 * 根据ID获取壁纸详细信息
 * @param {Object} params 查询参数 {id}
 * @param {Object} config 请求配置
 */
export function apiGetImageDetailById(params, config = {}) {
  return cloudRequest('client-wallpaper-image', 'getImageDetailById', params, {
    ...defaultCacheConfig,
    cacheKey: `image_detail_${params.id}`,
    ...config
  })
}

/**
 * 切换壁纸收藏状态
 * @param {Object} params 参数 {id}
 * @param {Object} config 请求配置
 */
export function apiToggleFavorite(params, config = {}) {
  // 清除相关缓存
  // 清除相关缓存
  cacheManager.clearByPattern('wallpaper-user');
  if(params.id) {
	  cacheManager.clearByPattern(params.id);
  }
  
  return cloudRequest('client-wallpaper-image', 'toggleFavorite', params, {
    ...defaultMutationConfig,
    loadingText: '处理中...',
    ...config
  })
}

/**
 * 给壁纸评分
 * @param {Object} params 参数 {id, score}
 * @param {Object} config 请求配置
 */
export function apiRateWallpaper(params, config = {}) {
  // 清除相关缓存
  // 清除相关缓存
  cacheManager.clearByPattern('wallpaper-user');
  if(params.id) {
	  cacheManager.clearByPattern(params.id);
  }
  
  return cloudRequest('client-wallpaper-image', 'rateWallpaper', params, {
    ...defaultMutationConfig,
    loadingText: '提交评分...',
    ...config
  })
}

/**
 * 记录壁纸下载日志
 * @param {Object} params 参数 {id}
 * @param {Object} config 请求配置
 */
export function apiDownloadWallpaperLog(params, config = {}) {
  // 清除相关缓存
  cacheManager.clearByPattern('wallpaper-user');
  if(params.id) {
	  cacheManager.clearByPattern(params.id);
  }
  
  return cloudRequest('client-wallpaper-image', 'downloadWallpaperLog', params, {
    ...defaultMutationConfig,
    showLoading: false, // 下载不显示loading
    ...config
  })
}

// ==================== 用户相关 ====================
/**
 * 获取我下载的壁纸列表
 * @param {Object} params 查询参数
 * @param {Object} config 请求配置
 */
export function apiGetMyDownloads(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-user', 'getMyDownloads', params, {
    ...defaultCacheConfig,
    toLogin: true, // 需要登录
    ...config
  })
}

/**
 * 删除下载记录
 * @param {Object} params 参数 {id}
 * @param {Object} config 请求配置
 */
export function apiDeleteDownloadRecord(params, config = {}) {
  // 清除相关缓存
  cacheManager.clearByPattern('wallpaper-user');
  if(params.id) {
	  cacheManager.clearByPattern(params.id);
  }
  
  
  return cloudRequest('client-wallpaper-user', 'deleteDownloadRecord', params, {
    ...defaultMutationConfig,
    loadingText: '删除中...',
    toLogin: true,
    ...config
  })
}

/**
 * 获取我评分的壁纸列表
 * @param {Object} params 查询参数
 * @param {Object} config 请求配置
 */
export function apiGetMyRatings(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-user', 'getMyRatings', params, {
    ...defaultCacheConfig,
    toLogin: true,
    ...config
  })
}

/**
 * 删除评分记录
 * @param {Object} params 参数 {id}
 * @param {Object} config 请求配置
 */
export function apiDeleteRatingRecord(params, config = {}) {
  // 清除相关缓存
  cacheManager.clearByPattern('wallpaper-user');
  if(params.id) {
	  cacheManager.clearByPattern(params.id);
  }
  
  return cloudRequest('client-wallpaper-user', 'deleteRatingRecord', params, {
    ...defaultMutationConfig,
    loadingText: '删除中...',
    toLogin: true,
    ...config
  })
}

/**
 * 获取我收藏的壁纸列表
 * @param {Object} params 查询参数
 * @param {Object} config 请求配置
 */
export function apiGetMyFavorites(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-user', 'getMyFavorites', params, {
    ...defaultCacheConfig,
    toLogin: true,
    ...config
  })
}

/**
 * 删除收藏记录
 * @param {Object} params 参数 {id}
 * @param {Object} config 请求配置
 */
export function apiDeleteFavoriteRecord(params, config = {}) {
  // 清除相关缓存
  cacheManager.clearByPattern('wallpaper-user');
  if(params.id) {
  	  cacheManager.clearByPattern(params.id);
  }
  
  return cloudRequest('client-wallpaper-user', 'deleteFavoriteRecord', params, {
    ...defaultMutationConfig,
    loadingText: '删除中...',
    toLogin: true,
    ...config
  })
}

// ==================== 用户认证 ====================
/**
 * 通过服务端校验token
 * @param {Object} params 参数
 * @param {Object} config 请求配置
 */
export function apiCheckToken(params = {}, config = {}) {
  return cloudRequest('client-wallpaper-user', 'getUserInfo', params, {
    ...defaultMutationConfig,
    useCache: false,
    toLogin: false,
    ...config
  })
}






